Recently, protocols have been developed for accessing data storage over networks. These protocols form the basis for new classes of network storage solutions wherein data is remotely stored and distributed within both storage area networks (SANs) and across larger public networks including the Internet. The iSCSI transport protocol standard defines one such approach for accessing and transporting data over commonly utilized Internet Protocol (IP) networks. Using the iSCSI command and instruction set, conventional Small Computer Systems Interface (SCSI) commands, typically associated with communication within locally maintained storage devices, may be encapsulated in a network-compatible protocol wrapper allowing SCSI communication between devices in remote manner. The iSCSI protocol may further be used by a host computer system or device to perform block data input/output (I/O) operations with any of a variety of peripheral target devices. Examples of target devices may include data storage devices such as disk, tape, and optical storage devices, as well as, printers, scanners, and other devices that may be networked to one another to exchange information.
In a SAN environment where storage devices are remotely accessible across a network, the block data operations associated with the iSCSI protocol may be structured so as to be compatible with the general manner of processing associated with existing storage devices. For example, disk drives may read and write using a fixed block size (e.g. 512-byte block). In contrast, computer applications may require access to a file of arbitrary length. One function of a computer file system is to change file-oriented requests associated with an application into block-level instructions that may be recognized and processed by the storage devices. Using the iSCSI protocol, such application requests may be processed by the file system to generate storage device compatible instructions thereby permitting storage and retrieval of information.
From an application or software perspective, an iSCSI device generally appears as a locally-attached SCSI device. As with the standard SCSI protocol, iSCSI information exchange is based on communication between an initiator device and a target device (e.g. client/server model). An iSCSI device that requests a connection to the target device and issues an initial series of SCSI commands is referred to as the initiator. An iSCSI device that completes the connection to the initiator and receives the initial SCSI commands is referred to as the target. One function of the initiator is to generate SCSI commands (e.g. data storage and access requests) that are passed through an iSCSI conversion layer where the SCSI commands are encapsulated as iSCSI protocol data units (PDUs). Thereafter, the iSCSI PDUs may be distributed across a network to the target device where the underlying SCSI instructions and data are extracted and processed. In a similar manner, the target device may transmit data and information prepared using the SCSI responses and encapsulated as iSCSI PDUs to be returned to the initiator.